Transaction হলো এক বা একাধিক SQL অপারেশনের একটি গ্রুপ, যেগুলি একত্রে সম্পাদিত হয় এবং একে অপরের ওপর নির্ভরশীল। একটি ট্রানজেকশনের মূল উদ্দেশ্য হল ডেটাবেসে একত্রিত অপারেশনগুলোকে একটি নির্দিষ্ট লজিক্যাল ইউনিট হিসেবে পরিচালনা করা। যখন একটি ট্রানজেকশন সফলভাবে সম্পন্ন হয়, তখন সমস্ত পরিবর্তন স্থায়ীভাবে ডেটাবেসে জমা হয়, এবং যখন ট্রানজেকশন ব্যর্থ হয়, তখন সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরে আসে। SQL Server-এ BEGIN, COMMIT, এবং ROLLBACK ট্রানজেকশন পরিচালনা করতে ব্যবহৃত হয়।
1. Transaction এর মৌলিক ধারণা
একটি Transaction হল একটি অ্যাটমিক (atomic) অপারেশন, যা অর্থাৎ একটি সম্পূর্ণ কার্যক্রম হিসেবে বিবেচিত হয় এবং এটি সম্পূর্ণভাবে সফল বা সম্পূর্ণভাবে ব্যর্থ হতে পারে। একাধিক ডেটাবেস অপারেশন (যেমন ইনসার্ট, আপডেট, ডিলিট) একত্রে সম্পাদিত হলে সেগুলি একটি ট্রানজেকশনের অংশ হতে পারে।
একটি ট্রানজেকশন শুরু হয় BEGIN TRANSACTION দিয়ে এবং সম্পন্ন হয় COMMIT বা ROLLBACK এর মাধ্যমে।
2. BEGIN TRANSACTION
BEGIN TRANSACTION স্টেটমেন্ট দিয়ে ট্রানজেকশন শুরু হয়। এটি ট্রানজেকশনের সমস্ত অপারেশনকে একটি ইউনিট হিসেবে কাজ করতে নির্দেশ দেয়, যাতে আপনি যদি সমস্ত অপারেশন সফলভাবে শেষ করেন, তবে সেগুলি একসাথে কমিট (commit) করতে পারেন।
2.1. BEGIN TRANSACTION উদাহরণ
BEGIN TRANSACTION;
INSERT INTO Employees (EmployeeID, EmployeeName, Country)
VALUES (1, 'John Doe', 'USA');
UPDATE Employees
SET Country = 'Canada'
WHERE EmployeeID = 1;
এখানে, BEGIN TRANSACTION দিয়ে একটি ট্রানজেকশন শুরু করা হয়েছে এবং দুইটি SQL অপারেশন (একটি ইনসার্ট এবং একটি আপডেট) সম্পাদিত হয়েছে। ট্রানজেকশনের মধ্যে সকল অপারেশন একযোগে কার্যকরী হবে।
3. COMMIT TRANSACTION
COMMIT TRANSACTION স্টেটমেন্ট ট্রানজেকশনের সমস্ত পরিবর্তন ডেটাবেসে স্থায়ীভাবে সংরক্ষণ করে। যদি ট্রানজেকশনের মধ্যে সমস্ত অপারেশন সফলভাবে সম্পন্ন হয়, তবে COMMIT ব্যবহার করা হয়, যার মাধ্যমে সমস্ত পরিবর্তন নিশ্চিত হয়।
3.1. COMMIT TRANSACTION উদাহরণ
BEGIN TRANSACTION;
INSERT INTO Employees (EmployeeID, EmployeeName, Country)
VALUES (1, 'John Doe', 'USA');
UPDATE Employees
SET Country = 'Canada'
WHERE EmployeeID = 1;
COMMIT TRANSACTION;
এখানে, BEGIN TRANSACTION দিয়ে ট্রানজেকশন শুরু হয়েছে, এরপর দুটি অপারেশন (একটি ইনসার্ট এবং একটি আপডেট) সম্পন্ন করা হয়েছে এবং COMMIT দ্বারা পরিবর্তনগুলো স্থায়ীভাবে ডেটাবেসে সংরক্ষিত করা হয়েছে।
4. ROLLBACK TRANSACTION
ROLLBACK TRANSACTION স্টেটমেন্ট ব্যবহার করে একটি ট্রানজেকশন পূর্বাবস্থায় ফিরিয়ে আনা হয়, অর্থাৎ, সমস্ত পরিবর্তন বাতিল হয়ে যায় এবং ডেটাবেসের অবস্থা পূর্বের মতো থাকে। এটি তখন ব্যবহার করা হয় যখন ট্রানজেকশনের কোন অপারেশন ব্যর্থ হয় এবং আপনি সমস্ত পরিবর্তন রদ করতে চান।
4.1. ROLLBACK TRANSACTION উদাহরণ
BEGIN TRANSACTION;
INSERT INTO Employees (EmployeeID, EmployeeName, Country)
VALUES (1, 'John Doe', 'USA');
UPDATE Employees
SET Country = 'Canada'
WHERE EmployeeID = 1;
-- Imagine that an error occurs here, so we rollback
ROLLBACK TRANSACTION;
এখানে, ROLLBACK TRANSACTION দ্বারা সমস্ত পরিবর্তন বাতিল হয়ে যাবে এবং Employees টেবিলে কোনো পরিবর্তন ঘটবে না। প্রথমে INSERT এবং UPDATE অপারেশন হয়েছিল, কিন্তু ROLLBACK এর মাধ্যমে সেগুলি পূর্বাবস্থায় ফিরে যাবে।
5. Transaction এর অ্যাটমিকতা
ট্রানজেকশন তিনটি মূল বৈশিষ্ট্যের ওপর ভিত্তি করে কাজ করে, যেগুলো ACID নামে পরিচিত:
- Atomicity: একটি ট্রানজেকশন বা পুরোপুরি সফল হয়, অথবা পুরোপুরি ব্যর্থ হয়। এর মধ্যে কোন অর্ধেক সফল বা ব্যর্থ হওয়া সম্ভব নয়।
- Consistency: ট্রানজেকশন সম্পন্ন হলে, ডেটাবেসের অবস্থা একটি সঠিক এবং অনুমোদিত অবস্থায় থাকবে।
- Isolation: একাধিক ট্রানজেকশন যদি একই ডেটাতে কাজ করে, তবে প্রতিটি ট্রানজেকশন এমনভাবে সম্পন্ন হবে যেন তারা একে অপরকে প্রভাবিত না করে।
- Durability: ট্রানজেকশন সম্পন্ন হওয়ার পর, তার পরিবর্তন স্থায়ীভাবে ডেটাবেসে রয়ে যাবে, এমনকি সিস্টেম ক্র্যাশ হওয়ার পরও।
6. Transaction ব্যবহারের সুবিধা
- ডেটার একাগ্রতা বজায় রাখা: ট্রানজেকশন ব্যবহার করে আপনি ডেটাবেসে নির্ভুল এবং সামঞ্জস্যপূর্ণ ডেটা রাখতে পারবেন।
- নিরাপত্তা: আপনি যদি কোনো ত্রুটি বা ব্যতিক্রম ঘটতে দেখেন, তবে ট্রানজেকশন রোলব্যাক করে পূর্বের অবস্থায় ফিরে যেতে পারবেন, যা ডেটার নিরাপত্তা নিশ্চিত করে।
- বিভিন্ন অপারেশন একত্রে পরিচালনা: একাধিক অপারেশনকে একত্রে পরিচালনা করা সম্ভব, যার ফলে পুরো প্রক্রিয়া একটি একক ইউনিট হিসেবে কাজ করে।
7. ট্রানজেকশন ব্যবহারের উদাহরণ
BEGIN TRANSACTION;
-- Insert a new employee record
INSERT INTO Employees (EmployeeID, EmployeeName, Country)
VALUES (2, 'Jane Doe', 'USA');
-- Update the employee record
UPDATE Employees
SET Country = 'Mexico'
WHERE EmployeeID = 2;
-- Assume there is an error with the next operation, so we rollback
--ROLLBACK TRANSACTION; -- Uncomment to rollback
COMMIT TRANSACTION; -- Commit the transaction if no error occurs
এখানে, যদি কোনো ত্রুটি বা সমস্যা দেখা দেয়, তবে ROLLBACK TRANSACTION দিয়ে আপনি সমস্ত পরিবর্তন বাতিল করতে পারবেন, এবং যদি সব কিছু ঠিক থাকে তবে COMMIT TRANSACTION দ্বারা সমস্ত পরিবর্তন স্থায়ীভাবে সংরক্ষণ করতে পারবেন।
ট্রানজেকশন ব্যবহারের মাধ্যমে আপনি ডেটাবেসে শক্তিশালী নিয়ন্ত্রণ এবং নির্ভরযোগ্যতা তৈরি করতে পারেন, যা একটি বড় স্কেল অ্যাপ্লিকেশনের জন্য অত্যন্ত গুরুত্বপূর্ণ।
Read more